/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ipartek.formacion.gestformwww.controlador;

import com.ipartek.formacion.gestformwww.modelo.ModeloEntrega;
import com.ipartek.formacion.gestformwww.modelo.ModeloMaterial;
import com.ipartek.formacion.gestformwww.modelo.beans.Entrega;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import java.util.ArrayList;
import java.util.Date;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Santi, ekaitz
 */
public class CrearEntregaAccion implements Accion {

    public AccionRouter ejecuta(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) {
        AccionRouter router = null;
        ResourceBundle rb = (ResourceBundle) servlet.getServletContext().getAttribute("acciones-mapeo");
        ModeloEntrega modeloEntrega = (ModeloEntrega) servlet.getServletContext().getAttribute("ModeloEntrega");
        ModeloMaterial modeloMaterial = (ModeloMaterial) servlet.getServletContext().getAttribute("ModeloMaterial");
        Date fecha = new Date();
        int cantidad = 0;
        ArrayList<Integer> libros = new ArrayList<Integer>();
        ArrayList<String> errores = new ArrayList<String>();
        ArrayList<String> mensajes = new ArrayList<String>();
        int libId = 0;
        int idCurso = 0;
        String observaciones = "";
        if (request.getSession().getAttribute("usuario") != null && request.getMethod().equalsIgnoreCase("POST")) {
            if (Verificador.numeroValido(request.getParameter("libId"))) {
                libId = Integer.parseInt((String) request.getParameter("libId"));
                try {
                    if (request.getParameterValues("listaLibId") != null) {
                        for (String libro : (String[]) request.getParameterValues("listaLibId")) {
                            libros.add(Integer.parseInt(libro));
                        }
                        cantidad = libros.size();
                    } else {
                        errores.add("error-creacion-entrega-imposible");

                        libros = null;
                    }
                } catch (NumberFormatException ex) {
                    libros = null;
                }

                if (request.getParameter("idCurso") != null) {
                    idCurso = Integer.parseInt(request.getParameter("idCurso"));

                }

                if (request.getParameter("observacionesEntrega") != null) {
                    observaciones = request.getParameter("observacionesEntrega");
                }

                Entrega entrega = new Entrega();
                entrega.setCantidad(cantidad);
                entrega.setCurId(idCurso);
                entrega.setEntConfirmado(false);
                entrega.setEntFecha(fecha.toString());
                entrega.setObservaciones(observaciones);
                entrega.setEstPedido(1);

                /*
                 * Si solo hay un libro, o si hay varios
                 */
                if (libId == 0) {
                    for (int x = 0; x < libros.size(); x++) {
                        entrega.setLibId(libros.get(x));
                        try {
                            modeloEntrega.insertarEntrega(entrega);
                            mensajes.add("mensaje-crear-entrega");
                        } catch (GestorFormacionExcepcion ex) {
                            Logger.getLogger(CrearEntregaAccion.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                } else {
                    entrega.setLibId(libId);
                    try {
                        modeloEntrega.insertarEntrega(entrega);
                    } catch (GestorFormacionExcepcion ex) {
                        Logger.getLogger(CrearEntregaAccion.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }

                router = new AccionRouter("principal");
                request.setAttribute("contenido", "importar-material");
                request.setAttribute("errores", errores);
                request.getSession().setAttribute("mensajes", mensajes);

            } else {
                router = new AccionRouter("inicio", false);
            }


            return router;

        }
        return router;

    }
}
